/**
 * 给定回文字符串，要求重新排列形成一个不同的回文串。
 * 只需检查前一半即可，碰上两个不同的字母将其交换即可。
 * 如果没有不同的字母则无解。
 */
#include <bits/stdc++.h>
using namespace std;

using vi = vector<int>;

string S;

void procOu(){
    int n = S.length();
    map<char, vi> pos;
    for(int i=0;i<n/2;++i){
        pos[S[i]].emplace_back(i);
    }
    if(pos.size() == 1) return (void)(cout << "-1\n");

    auto it = pos.begin();
    auto jt = ++pos.begin();

    int ip = it->second.front();
    int jp = jt->second.front();

    char ic = it->first, jc = jt->first;

    S[ip] = S[n - 1 - ip] = jc; 
    S[jp] = S[n - 1 - jp] = ic;
    cout << S << endl;
    return;
}

int main(){
#ifndef ONLINE_JUDGE
    freopen("z.txt", "r", stdin);
#endif
    ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(0);
    cin >> S;
    if(S.length() & 1) procOu();
    else procOu();
    return 0;
}
